package org.ytor.core.sysapi.log.model;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.ytor.common.util.bean.Beans;
import org.ytor.core.sqlflow.PersistenceModel;
import io.swagger.v3.oas.annotations.media.Schema;
import org.ytor.core.sysapi.log.resp.SysLogResp;

/**
 * created by 管理员 on 2025年5月27日 11:40:29
 * <br/>
 * SysLog表实体类
 * <br/>
 */
@Data
@Schema(description ="基础表结构")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class SysLog extends PersistenceModel<SysLog, String> {

    /**
     * 日志类型
     */
    @Schema(description ="日志类型")
    private Integer type;
    /**
     * 操作人ip
     */
    @Schema(description ="操作人ip")
    private String ip;

    /**
     * 链路跟踪 ID，用于聚合同一次调用的所有日志
     */
    @Schema(description ="链路跟踪 ID，用于聚合同一次调用的所有日志")
    private String traceId;

    /**
     * 所在线程信息
     */
    @Schema(description ="所在线程信息")
    private String thread;

    /**
     * HTTP 请求路径
     */
    @Schema(description ="HTTP 请求路径")
    private String requestUrl;

    /**
     * 日志发生的类名
     */
    @Schema(description ="日志发生的类名")
    private String className;

    /**
     * 日志发生的方法名
     */
    @Schema(description ="日志发生的方法名")
    private String methodName;

    /**
     * 参数
     */
    @Schema(description ="参数")
    private String params;

    /**
     * 返回值大小
     */
    @Schema(description ="返回值大小")
    private Integer resultLength;

    /**
     * 请求耗时
     */
    @Schema(description ="请求耗时")
    private Long cost;

    /**
     * 日志主体内容
     */
    @Schema(description ="日志主体内容")
    private String content;

    /**
     * 错误信息
     */
    @Schema(description ="错误信息")
    private String errorMsg;

    /**
     * 错误堆栈信息
     */
    @Schema(description ="错误堆栈信息")
    private String errorStack;

    @Override
    public SysLogResp toResp() {
        return Beans.copyProperties(this, SysLogResp.class);
    }
}